import axios from "axios";
import router from "@/router";
import { MyMessage } from "@/utils/MyMessage"

// 标注自己接口的请求域
export const baseURL = function () {
    return "http://47.96.20.115:9706";
}

// 获取缓存内的用户信息
export const getUserInfo = function () {
    if (!localStorage.getItem("user")) {
        return;
    }
    let userInfo = JSON.parse(localStorage.getItem("user"))
    return userInfo;
}

export const request = axios.create({
    baseURL: baseURL(), // 接口的请求域
    timeout: 10000 // 接口请求的超时时间
})

// 请求拦截器的编写，为了给每一次请求塞入Token
request.interceptors.request.use(
    (config) => {
        if (config.url === "/user/importExcel") {
            config.headers["Content-Type"] = "multipart/form-data";
        } else {
            config.headers["Content-Type"] = "application/json;charset=utf-8";
        }
        // 塞入token供后台验证
        config.headers["token"] = getUserInfo() ? getUserInfo().token : ""
        // 一定要返回
        return config
    },
    (error) => {
        return Promise.reject(error)
    }
)

// 响应拦截器的编写，为了能够识别后台返回的是否是 401 状态，如果是401，就要跳转到登陆页面
request.interceptors.response.use(
    (response) => {
        // 拿到的是后台返回的结果集
        let res = response.data
        // 代表该次请求未授权,跳转登陆页面，重新登陆
        if (res.code === '401') {
            router.push({name: "login"})
        }
        // 一定要返回
        return res
    },
    error => {
        MyMessage.methods.messageError(error)
        return error
    }
)